Server virtualization describes a software abstraction that separates a physical resource and its use from the underlying physical machine. Most physical resources can be abstracted and provisioned as virtualized entities. Some examples of virtualized entities include the central processing unit (CPU), network input/output (I/O), and storage I/O. A virtual machine (VM) is a virtualization of a physical machine and its hardware components. A VM typically includes a virtual processor, virtual system memory, virtual storage, and various virtual devices. A single physical machine can host a plurality of VMs. Guest operating systems execute on the VMs and function as though executing on the actual hardware of the physical machine.
A layer of software provides an interface between the VMs resident on a physical machine and the underlying physical hardware (commonly referred to as a hypervisor or virtual machine monitor (VMM)). This interface multiplexes access to the hardware among the VMs. Typical server virtualization implementations have the VMs share the physical network interface (e.g., a network adapter, network interface card, or NIC) of the physical machine for performing external network I/O operations. In some systems, the NIC may also be virtualized. For example, an Unified Fabric Port (UFP) protocol may be used to flexibly allocate, reallocate and/or adjust bandwidth for a communication link. The UFP protocol logically partitions the physical communication link that connects the port of a physical network interface on a server (e.g., the NIC) to the port of a network switch into logical subdivisions or channels (each a vNIC). To the operating system on the server (or to the hypervisor), each channel appears as an independent physical network interface having its own unique media access control (MAC) address. Each channel is independently managed as a separate switch port (i.e., virtual port) on the network switch. The number of channels and the bandwidth of each channel are configurable from the network switch or through an application programming interface (API) to the physical network interface.